/* eslint valid-jsdoc: "off" */

'use strict';

/**
 * @param {Egg.EggAppInfo} appInfo app info
 */
module.exports = appInfo => {
  /**
   * built-in config
   * @type {Egg.EggAppConfig}
   **/
  const config = exports = {};

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1695276348299_7869';

  // add your middleware config here
  config.middleware = ['errorHandler', 'adminAuth', 'adminSidebar', 'auth', 'xmlparse'];

  config.adminSidebar = {
    ignore: [
      '/api',
      '/admin/login',
      '/admin/loginevent',
      '/public'
    ]
  }

  config.adminAuth = {
    ignore: [
      '/api',
      '/admin/login',
      '/admin/loginevent'
    ]
  }

  config.auth = {
    match: [
      '/api/logout',
      '/api/user/info',
      '/api/upload',
      '/api/wechat/pay',
    ]
  }

  config.xmlparse = {
    match: [
      '/api/wechat/notify',
    ]
  }
  // add your user config here
  const userConfig = {
    // myAppName: 'egg',
  };

  // 关闭csrf开启跨域
  config.security = {
    // csrf
    csrf: {
      headerName: 'x-csrf-token',
      ignore: ctx => {
        return ctx.request.url.startsWith('/api')
      },
    },
    // 跨域白名单
    // domainWhiteList: ['http://localhost:3000'],
  };

  // 允许跨域的方法
  config.cors = {
    origin: '*',
    allowMethods: 'GET, PUT, POST, DELETE, PATCH'
  };
  config.crypto = {
    secret: 'qhdgw@45ncashdaksh2!#@3nxjdas*_672'
  };

  // 数据库
  config.sequelize = {
    dialect: 'mysql',
    host: '8.142.73.139',
    username: "student",
    password: 'TT8MdkjzsGe6Ha24',
    port: 3306,
    database: 'student',
    // 中国时区
    timezone: '+08:00',
    define: {
      // 取消数据表名复数
      freezeTableName: true,
      // 自动写入时间戳 created_at updated_at
      timestamps: true,
      // 字段生成软删除时间戳 deleted_at
      // paranoid: true,
      createdAt: 'created_time',
      updatedAt: 'updated_time',
      // deletedAt: 'deleted_time',
      // 所有驼峰命名格式化
      underscored: true
    }
  };

  config.valparams = {
    locale: 'zh-cn',
    throwError: true
  };

  config.view = {
    mapping: {
      ".html": "nunjucks",
    },
  };

  config.session = {
    // 在有些场景下，我们希望用户如果长时间都在访问我们的站点，则延长他们的 Session 有效期，不让用户退出登录态
    renew: true,
    // key 代表了存储 Session 的 Cookie 键值对的 key 是什么
    key: 'EGG_SESS',
    // 最长保存时间（毫秒）
    maxAge: 24 * 3600 * 1000 * 30, // 30 天
    // 设置键值对是否可以被 js 访问，默认为 true，不允许被 js 访问。
    httpOnly: true,
    // 加密
    encrypt: true,
  };

  config.multipart = {
    fileSize: "50mb",
    mode: "stream",
    fileExtensions: [
      ".xls",
      ".txt",
      ".jpg",
      ".JPG",
      ".png",
      ".PNG",
      ".gif",
      ".GIF",
      ".jpeg",
      ".JPEG",
    ], // 扩展几种上传的文件格式
  };

  // redis存储
  config.redis = {
    client: {
      port: 6379, // Redis port
      host: "127.0.0.1", // Redis host
      password: "",
      db: 2,
    },
  };

  config.webUrl = 'https://student.hczycm.com'


  config.mp = {
    name: '韩城新师课堂', // 客户端名称
    appid: 'wx189ff24485e34333', // 公众号 AppID
    secret: '8ff21adec3c070b27f2bb69b7e1ba51c', // 公众号 AppSecret
    appId: 'wx189ff24485e34333', // 小程序appId
    appSecret: '8ff21adec3c070b27f2bb69b7e1ba51c', // 小程序应用密钥
    mchId: '1285457401', // 商户平台商家编号
    apiKey: 'hczycmhczycmhczycmhczycmhczycm85', // 商户支付密钥
    notifyUrl: 'https://student.hczycm.com/api/wechat/notify' // 支付结果回调地址
  };



  return {
    ...config,
    ...userConfig,
  };
};
